#

| Chapter 5 Basic sed Commands |

## 5.4 Delete

We previously showed examples of the delete command (`d`). It takes an address and deletes the contents of the pattern space if the line matches the address.

The delete command is also a command that can change the flow of control in a script. That is because once it is executed, no further commands are executed on the "empty" pattern space.[4] The delete command causes a new line of input to be read and a new pass on the editing script to begin from the top. (In this behavior, it is the same as the `next` command, which you'll encounter later in this chapter.)

> [4] UNIX documentation reads "no further commands are attempted on the corpse of a deleted line." R.I.P.

The important thing to remember is: if the line matches the address, the entire line is deleted, not just the portion of the line that is matched. (To delete a portion of a line, use the substitute command and specify an empty replacement.) In the previous chapter, we showed a command to delete blank lines:

>     /^$/d

Another use of the delete command could be to strip out certain `troff` requests, such as those that add spacing, break the page, and turn fill mode off and on:

>     /^\.sp/d
>     /^\.bp/d
>     /^\.nf/d
>     /^\.fi/d

These commands delete an entire line. For instance, the first command will delete the line ".sp 1" or ".sp .03v".

The delete command can be used to delete a range of lines. In the previous chapter, there is an example of deleting all tables from a file by deleting the lines between the .TS and .TE macros. There is also a delete command (`D`) used to delete a portion of a multiline pattern space. This advanced command is presented in the next chapter.

5.3 Substitution |  | 5.5 Append, Insert, and Change